package modelo.servicio;

import java.util.ArrayList;
import modelo.bd.dao.SeccionDAO;
import modelo.bd.exception.DAOException;
import modelo.dominio.Seccion;

public class Secciones {

    private static Secciones instancia;
    private SeccionDAO dao;
    
    private Secciones() {
        this.dao = new SeccionDAO();
    }

    public static Secciones instancia() {
        if (instancia == null) {
            instancia = new Secciones();
        }
        return instancia;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return new CloneNotSupportedException("No se puede clonar Secciones.");
    }

    public ArrayList<Seccion> obtenerTodo() throws DAOException {
        return dao.selectAll();
    }

    public ArrayList<Seccion> obtenerPorArea(String area) throws DAOException {
        return dao.selectWhere("ID_AREA = " + area);
    }
    
    public Seccion obtenerPorId(Integer idSeccion) throws DAOException {
        return dao.selectWhere("ID_SECCION = " + idSeccion).get(0);
    }
    
    public Seccion obtenerUltimo() throws DAOException {
        return dao.selectWhere("ID_SECCION = @@IDENTITY").get(0);
    }
    
    public ArrayList<Seccion> obtenerPadres(Integer area) throws DAOException {
        return dao.selectWhere("PADRE IS NULL ");//AND ID_AREA = " + area);
    }
    
    public ArrayList<Seccion> obtenerHijos(Integer idPadre) throws DAOException {
        return dao.selectWhere("PADRE = " + idPadre);
    }

    public void agregar(Seccion secc) throws DAOException {
        dao.add(secc);
    }

    public void eliminar(String idSec) throws DAOException {
        dao.deleteWhere("ID_SECCION = " + idSec);
    }

    public void actualizar(Seccion secc) throws DAOException {
        dao.update(secc);
    }

}
